1512D - Corrupted Array - CodeForces Solution


constructive algorithms data structures greedy *1200

Please click on ads to support us..

Python Code:

from math import log
from math import ceil
import os
import sys
from collections import Counter as ctr, deque as dq,defaultdict as dd
from io import BytesIO, IOBase
from types import GeneratorType

BUFSIZE = 8192

class FastIO(IOBase):
    newlines = 0
 
    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = 'x' in file.mode or 'r' not in file.mode
        self.write = self.buffer.write if self.writable else None
 
    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()
 
    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b'\n') + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()
 
    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)
 
 
class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode('ascii'))
        self.read = lambda: self.buffer.read().decode('ascii')
        self.readline = lambda: self.buffer.readline().decode('ascii')
 
 
sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip('\r\n')
 
from bisect import bisect_left as bl
from bisect import bisect_right as br

inp = lambda: int(input())
li = lambda: list(map(int, input().split()))
lb = lambda: list(map(int, input()))
ls = lambda: list(input())
bi = lambda n: bin(n).replace("0b", "")

def yn(f):
    if f:
        print("YES")
    else:
        print("NO")

def bootstrap(f, stack=[]):
    def wrappedfunc(*args, **kwargs):
        if stack:
            return f(*args, **kwargs)
        else:
            to = f(*args, **kwargs)
            while True:
                if type(to) is GeneratorType:
                    stack.append(to)
                    to = next(to)
                else:
                    stack.pop()
                    if not stack:
                        break
                    to = stack[-1].send(to)
            return to
 
    return wrappedfunc

def isPrime(n):
    if n <= 1:
        return True
    if n <= 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    i = 5
    while i * i <= n:
        if n % i == 0 or n % (i + 2) == 0:
            return False
        i = i + 6
    return True

def nf(n,a):
    b=a*a
    c=b*a
    d=c*a
    e=n
    ct=0
    while e%a==0:
        if e%d==0:
            ct+=4
            e=e//d
        if e%c==0:
            ct+=3
            e=e//c
        if e%b==0:
            ct+=2
            e=e//b
        if e%a==0:
            ct+=1
            e=e//a
    return ct

def main(__=1):
    for _ in range(__):
        n=inp()
        a=sorted(li())
        s=sum(a[:n+1])
        if s>a[-1] and (s-a[-1]) in a[:n+1]:
            f=False
            for i in range(n+1):
                if a[i]!=(s-a[-1]) or f:
                    print(a[i],end=" ")
                else:
                    f=True
            print()
        elif s-a[-2] == a[-2]:
            print(*a[:n])
        else:
            print(-1)

        

if __name__ == "__main__":
        main(inp())

C++ Code:

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<char,int> pci;
typedef map<int,int> mapii;
typedef vector<int> vi;

#define fastIO  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define int long long
#define endl "\n"
#define space " "
#define printbay(a, n)  for(int i=0;i<n;i++)    cout<<a[i]<<space;    cout<<endl;

const int MOD = 1e9 + 7;

//---------------------------------------------------------------------------------------------------//

long long power(int aa, int n, int m = MOD) 
{
    long long ans = 1LL;
    while(n) {
        if(n&1) ans = 1LL * (ans%m * aa%m)%m;
        aa = (1LL*aa%m * aa%m)%m;
        n >>= 1;
    }
    return ans;
}

long long gcd(long long a, long long b)
{
    return b == 0 ? a : gcd(b, a % b);
    //O(log(min(a,b)), O(log(min(a,b))
}

long long LCM(int a, int b)
{
    return a*b/gcd(a,b);
}


long long factorial(int n)
{
    if (n >= MOD)
        return 0;
 
    int result = 1;
    for (int i = 1; i <= n; i++)
        result = (result * i) % MOD;
 
    return result;
}

static bool cmp(pair<int,int> a, pair<int,int> b)
{
    if (a==b)
    {
        return a.second<b.second;
    }
    
    return a.first<b.first;
}

//---------------------------------------------------------------------------------------------------//

void solve()
{
    int n;
    cin>>n;

    int b[n+2];
    int totalSum=0;
    for(int i=0;i<n+2;i++)
    {
        cin>>b[i];
        totalSum+=b[i];
    }

    sort(b, b+n+2);
    int greatest=b[n+1];
    int secondGreatest=b[n];
    
    int k=2;
    int sumIndex=n+1;
    while(k--)
    {
        int requiredSum=b[sumIndex];
        for(int i=0;i<n+2;i++)
        {
            if (i!=sumIndex)
            {
                if (totalSum-requiredSum-b[i]==requiredSum)
                {
                    //got an answer
                    for(int j=0;j<n+2;j++)
                    {
                        if (j!=sumIndex && j!=i)
                        {
                            cout<<b[j]<<space;
                        }
                    }
                    cout<<endl;
                    return;
                }
            }
        }

        sumIndex--;
    }

    cout<<-1<<endl;
}

int32_t main()
{
    fastIO;
    int t;
    cin>>t;
    while(t--)
    {
        solve();


    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

580A- Kefa and First Steps
1472B- Fair Division
996A - Hit the Lottery
MSNSADM1 Football
MATCHES Playing with Matches
HRDSEQ Hard Sequence
DRCHEF Doctor Chef
559. Maximum Depth of N-ary Tree
821. Shortest Distance to a Character
1441. Build an Array With Stack Operations
1356. Sort Integers by The Number of 1 Bits
922. Sort Array By Parity II
344. Reverse String
1047. Remove All Adjacent Duplicates In String
977. Squares of a Sorted Array
852. Peak Index in a Mountain Array
461. Hamming Distance
1748. Sum of Unique Elements
897. Increasing Order Search Tree
905. Sort Array By Parity
1351. Count Negative Numbers in a Sorted Matrix
617. Merge Two Binary Trees
1450. Number of Students Doing Homework at a Given Time
700. Search in a Binary Search Tree
590. N-ary Tree Postorder Traversal
589. N-ary Tree Preorder Traversal
1299. Replace Elements with Greatest Element on Right Side
1768. Merge Strings Alternately
561. Array Partition I
1374. Generate a String With Characters That Have Odd Counts